/*公用的js方法*/
//重写ajax方法
(function($){
    //首先备份下jquery的ajax方法
    var _ajax=$.ajax;

    //重写jquery的ajax方法
    $.ajax=function(opt){
        //备份opt中error和success方法
        var fn = {
            error:function(XMLHttpRequest, textStatus, errorThrown){},
            success:function(data, textStatus){}
        };
        if(opt.error){
            fn.error=opt.error;
        }
        if(opt.success){
            fn.success=opt.success;
        }

        var index = "";
        //扩展增强处理
        var _opt = $.extend(opt,{
            dataType:"json",
            error:function(XMLHttpRequest, textStatus, errorThrown){
                //错误方法增强处理
                if(textStatus=="error"){
                    if (layer) {
                        var XMLHttpRequestCode = XMLHttpRequest.status;
                        switch (XMLHttpRequestCode){
                            case 0:
                                layer.msg("你请求的资源不存在");
                                break;
                            case 500:
                                layer.msg("服务器内部异常");
                                break;
                            default:
                                layer.msg("出错了,请联系管理员!");
                            break;
                        }

                    } else {
                        alert("出错了,请联系管理员!");
                    }
                }

                fn.error(XMLHttpRequest, textStatus, errorThrown);
            },
            success:function(data, textStatus){
                //成功回调方法增强处理
                fn.success(data, textStatus);
            },
            beforeSend:function(XHR){
                //错误方法增强处理
                if (layer) {
                    index = layer.load(0, {shade: 0.05});
                } else {
                    alert("出错了,请联系管理员!");
                }
            },
            complete:function(XHR, TS){
                //请求完成后回调函数 (请求成功或失败之后均调用)。
                layer.close(index);
            }
        });
        return _ajax(_opt);
    };
})(jQuery);

//填充html元素
$.fn.adapterHtmlHandler =function(data) {
    var thisHtml = $(this).html();
    return adapterStringlHandler(thisHtml, data);
};

//适配替换字符串
function adapterStringlHandler(str, data) {
    for (var col in data) {
        eval("var replaceStr = /{"+col+"}/g");
        str = str.replace(replaceStr, data[col]);
    }
    return str;
}

function isNull(obj) {
    return obj == undefined || obj == null || (typeof obj == "string" && obj.replace(/\s+/g, "") == "");
}

function isNotNull(obj) {
    return !isNull(obj);
}


function ifNullDefaultEmptyString(obj) {
    return ifNullDefaultString(obj);
}

function ifNullDefaultString(obj,Default) {
    return obj == null || obj == "" || obj == undefined || (obj instanceof Array  && obj.length ==0)?Default?Default:"":obj;
}

//切换class
$.fn.toggleClass = function (changeClass,_changClass) {
    _changClass = isNull(_changClass)?"":_changClass;
    if($(this).hasClass(changeClass)){
        $(this).removeClass(changeClass);
        $(this).addClass(_changClass);
    }else{
        $(this).addClass(_changClass);
        $(this).addClass(changeClass);
    }
};

function isNullWithFixedStr(obj,fixedStr) {
    if(fixedStr instanceof  Array){
        var flag =false;
        for(var i = 0;i < fixedStr.length;i++){
            if(fixedStr[i] == obj ){
                flag = true;
                break;
            }
        }
        return isNull(obj) && flag;
    }else{
        return isNull(obj) && obj==fixedStr;
    }
}

//将form中所有含有name的标签 值返回一个json,用来查询 由form表单调用
$.fn.formDataToJson = function () {
    var returnJson = {};
    $(this).find("[name]").each(function () {
        var $this = $(this);
        if(isNotNull($this.val())){
            returnJson[$this.prop("name")] = $this.val();
        }
    });
    return returnJson;
};

//时间处理
function fullZero(m){return m<10?'0'+m:m }

function getDate(timestamp) {
    //timestamp，否则要parseInt转换
    var time = new Date(parseInt(timestamp));
    var y = time.getFullYear();
    var m = time.getMonth()+1;
    var d = time.getDate();
    var h = time.getHours();
    var mm = time.getMinutes();
    var s = time.getSeconds();
    return y+'-'+fullZero(m)+'-'+fullZero(d)+' '+fullZero(h)+':'+fullZero(mm)+':'+fullZero(s);
}

//将提交的表单数据转换成json数据格式
(function($){  
    $.fn.serializeJson=function(){  
        var serializeObj={};  
        var array=this.serializeArray();  
        var str=this.serialize();  
        $(array).each(function(){  
            if(serializeObj[this.name]){  
                if($.isArray(serializeObj[this.name])){  
                    serializeObj[this.name].push(this.value);  
                }else{  
                    serializeObj[this.name]=[serializeObj[this.name],this.value];  
                }  
            }else{  
                serializeObj[this.name]=this.value;   
            }  
        });  
        return serializeObj;  
    };  
})(jQuery);   
